package com.highcom.config;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;

import java.io.*;

public class POITest {

    @Test // 标记为测试方法
    public void test1() throws IOException { // 测试方法1，读取Excel文件并打印内容
        XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("/Users/dark/Desktop/123.xlsx"))); // 创建XSSFWorkbook对象，读取指定路径的Excel文件

        XSSFSheet sheet = excel.getSheetAt(0); // 获取第一个工作表
        for (Row row : sheet) { // 遍历工作表中的每一行
            for (Cell cell : row) { // 遍历行中的每一个单元格
                switch (cell.getCellType()) { // 根据单元格类型进行不同的处理
                    case STRING: // 如果单元格类型为字符串
                        System.out.println(cell.getStringCellValue()); // 打印单元格的字符串值 // 打印字符串值
                        break;
                    case NUMERIC: // 如果单元格类型为数字
                        System.out.println(cell.getNumericCellValue()); // 打印数字值
                        break;
                    case BOOLEAN: // 如果单元格类型为布尔值
                        System.out.println(cell.getBooleanCellValue()); // 打印布尔值
                        break;
                    case FORMULA: // 如果单元格类型为公式
                        System.out.println(cell.getCellFormula()); // 打印公式
                        break;
                    default: // 其他类型
                        System.out.println(""); // 打印空字符串
                }
            }
        }
        excel.close(); // 关闭Excel文件

    }

    @Test // 标记为测试方法
    public void test2()  throws IOException { // 测试方法2，读取Excel文件并打印内容
        XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("/Users/dark/Desktop/123.xlsx"))); // 创建XSSFWorkbook对象，读取指定路径的Excel文件

        XSSFSheet sheet = excel.getSheetAt(0); // 获取第一个工作表
        int lastRowNum = sheet.getLastRowNum(); // 获取最后一行的行号

        for (int i = 0 ;i<=lastRowNum;i++){ // 遍历每一行
            XSSFRow row = sheet.getRow(i); // 获取当前行

            short lastCellNum = row.getLastCellNum(); // 获取最后一列的列号
            for (int j = 0 ;j<lastCellNum;j++){ // 遍历每一列
                XSSFCell cell = row.getCell(j); // 获取当前单元格
                System.out.println(cell.getStringCellValue()); // 打印单元格的字符串值
            }
        }

        excel.close(); // 关闭Excel文件

    }

    @Test // 标记为测试方法
    public void test3() throws IOException { // 测试方法3，创建并写入Excel文件
        XSSFWorkbook excel = new XSSFWorkbook(); // 创建新的Excel工作簿
        XSSFSheet sheet = excel.createSheet("海康"); // 创建名为"海康"的工作表
        XSSFRow title = sheet.createRow(0); // 创建标题行
        title.createCell(0).setCellValue("姓名"); // 设置第一列标题为"姓名"
        title.createCell(1).setCellValue("地址"); // 设置第二列标题为"地址"
        title.createCell(2).setCellValue("年龄"); // 设置第三列标题为"年龄"

        XSSFRow dataRow = sheet.createRow(1); // 创建数据行
        dataRow.createCell(0).setCellValue("小明"); // 设置第一列数据为"小明"
        dataRow.createCell(1).setCellValue("北京"); // 设置第二列数据为"北京"
        dataRow.createCell(2).setCellValue("20"); // 设置第三列数据为"20"


        FileOutputStream out = new FileOutputStream(new File("/Users/dark/Desktop/hello.xlsx")); // 创建文件输出流，指定输出路径
        excel.write(out);
        out.flush();
        excel.close(); // 关闭Excel文件
    }



}
